package vue.FenetrePartie;

import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JPanel;

import controleur.Control;
import controleur.Controleur;
import vue.Observeur;


public class Panneau extends JPanel implements ActionListener, Observeur {
	
	private static final long serialVersionUID = 1L;

	private Magasin panneauMagasin;
	private InformationBatiment panneauInformationBatiment;
	private InformationPartie panneauInformationPartie;
	private Map panneauMap;
	private Control controleur;

	/**
	 * 
	 * @param chargerPartie, permet de savoir si on crée une nouvelle partie, ou si l'on charge une partie existant.
	 * On a besoin de le savoir pour la création d'un controleur ou non.
	 * 
	 * Ce panneau est celui qui va contenir l'ensemble des autres panneau de la fentre quand nous sommes dans l'état de jeu.
	 */
	public Panneau(boolean chargerPartie)
	{
		this.controleur = new Controleur(this);
		if(chargerPartie) this.controleur.chargerPartie("lol");
		
		this.setLayout (null);
		
		this.panneauInformationBatiment = new InformationBatiment(this);
		this.panneauInformationBatiment.setSize(300, 130);
		this.panneauInformationBatiment.setLocation(500,495);
		this.add(this.panneauInformationBatiment);
		
		this.panneauInformationPartie = new InformationPartie(this);
		this.panneauInformationPartie.setSize(200, 495);
		this.panneauInformationPartie.setLocation(600,0);
		this.add(this.panneauInformationPartie);
			
		this.panneauMap = new Map(this);
		this.panneauMap.setSize(600, 495);
		this.panneauMap.setLocation(0,0);
		this.add(this.panneauMap);	
		
		this.panneauMagasin = new Magasin(this);
		this.panneauMagasin.setSize(500, 130);
		this.panneauMagasin.setLocation(0,495);
		this.add(this.panneauMagasin);
	}
	

	public Magasin getPanneauMagasin() {
		return panneauMagasin;
	}


	public void setPanneauMagasin(Magasin panneauMagasin) {
		this.panneauMagasin = panneauMagasin;
	}


	public InformationBatiment getPanneauInformationBatiment() {
		return panneauInformationBatiment;
	}


	public void setPanneauInformationBatiment(
			InformationBatiment panneauInformationBatiment) {
		this.panneauInformationBatiment = panneauInformationBatiment;
	}


	public InformationPartie getPanneauInformationPartie() {
		return panneauInformationPartie;
	}


	public void setPanneauInformationPartie(
			InformationPartie panneauInformationPartie) {
		this.panneauInformationPartie = panneauInformationPartie;
	}


	public Map getPanneauMap() {
		return panneauMap;
	}


	public void setPanneauMap(Map panneauMap) {
		this.panneauMap = panneauMap;
	}
	
	
	public Control getControleur() {
		return controleur;
	}


	public void setControleur(Control controleur) {
		this.controleur = controleur;
	}


	public void paintComponent(Graphics g) 
	{
		super.paintComponent(g);		
	}
	
	@Override
	public void actionPerformed(ActionEvent e) 
	{
	
	}


	@Override
	public void rafraichir() {

		this.panneauMap.rafraichir();
		this.panneauInformationPartie.rafraichir();
	}	
}
